MySQL Een primaire sleutel maken in een nieuwe tabel
Probleem
Hoe maak je een nieuwe tabel aan met een primaire sleutel?
Oplossing
Je voegt eerst een nieuwe kolom toe van het gegevenstype int
, met de eigenschap AUTO_INCREMENT
en de constraint PRIMARY KEY
.
De naam van de primaire sleutel is meestal Id
. Bijvoorbeeld:
use ModernWays; drop table if exists Boeken; -- de naam van de tabel in pascalnotatie create table Boeken( Voornaam nvarchar(50), Familienaam nvarchar(80), Titel nvarchar(255), Uitgeverij nvarchar(255), Stad nvarchar(50), Verschijningsdatum varchar(4), Herdruk varchar(4), Commentaar nvarchar(2000), Categorie nvarchar(120), Id int auto_increment PRIMARY KEY );
Als je nu rijen invoegt, hoef je geen waarde te specifiëren voor de kolom Id
. Sterker nog: het is op geen enkele manier toegelaten een primaire sleutel in te stellen op NULL
.
Opgave
Schrijf nu een script, 0059__GamesCreate.sql
dat een tabel maakt voor video games, met een primaire sleutel met naam Id
die automatisch ophoogt voor elke nieuwe entry.
De titel van een game is van het type varchar
en kan maximaal 255 karakters tellen. Voor de ontwikkelaar geldt hetzelfde.
Schrijf vervolgens een script, 0060__GamesInsert.sql
, dat onderstaande data invult in de tabel:
Titel | Ontwikkelaar | Id |
---|---|---|
Doom | ID Software | 1 |
Doom | ID Software | 2 |
Tomb Raider | Crystal Dynamics | 3 |
Tomb Raider | Crystal Dynamics | 4 |
God of War | SCE Santa Monica | 5 |
God of War | SCE Santa Monica | 6 |
Schrijf ten slotte een script, 0061__GamesSelect.sql
, dat enkel de recentste Doom uit de tabel selecteert.